package com.cskaoyan.javase.oop2._1extends._0introduction._1new;
/**
 * 继承的引入
 * 根据我们之前学过的知识，完成如下练习：
 * 分别定义一个表示人和学生的类：
 * 1. 人类：有姓名属性，以及吃饭这个行为
 * 2. 教师类：有姓名，教师号两个属性，同时有吃饭，教学两种行为
 * 3. 学生类：有姓名，学号两个属性，同时有吃饭，学习两种行为
 * 很明显，像成员变量name，方法eat等都是被重复定义的成员。既然有重复，那就想复用它们，
 * 现在的需求是：复用类的成员。怎么做呢？
 * Java中对代码的直接复用依赖于某一个方法，而想要复用类的成员，就必须使用Java中的继承语法。
 *
 * 继承可以复用类的成员,继承的语法:
 * [访问权限修饰符] class 类名 extends 被继承的类/已经存在的某个类{}
 * 解释:
 *      1.在java中,定义某个类时,可以显式的使用extends关键字,去继承某个类
 *      继承的目的是为了复用成员
 *      2.已存在的,被继承的类,称之为父类
 *      继承父类的类,叫子类
 *      3.子类通过继承父类,会得到父类中的所有成员
 *          注:
 *          静态成员不考虑继承(原因以后再说)
 *          构造器不算类的成员,也不考虑继承
 *          这里的继承,仅考虑普通成员的继承
 *
 *      4.子类在继承得到父类成员的基础上,还可以定义独属于自身的成员
 *      这叫做"子类继承并扩展了父类"
 *      所以子类的功能往往比父类更加强大
 *      "青出于蓝而胜于蓝"
 *
 *      5.父类中没有的成员,子类肯定不能继承
 *
 * @since 10:48
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        Teacher t = new Teacher();
        System.out.println(t.name);
        t.eat();
    }
}
class Person{
    String name;
    public void eat(){
        System.out.println("今天中午吃什么呢?");
    }
}
class Teacher extends Person{
    int teacherId;
    public void teach(){
        System.out.println("我给你上一节课!");
    }
}
class Student extends Person{
    int stuId;
    public void study(){
        System.out.println("好好学习,天天向上!");
    }
}